#ifndef USER_H
#define USER_H

#include <QObject>
#include <QDebug>
#include <QVector>
// 用户
struct Friend{
    // 好友的id，备注，分组
    QString id;
    QString remarks;
    QString job;
    QString category;
    // 好友聊天的id
    QString chatId;
    // 是否相等用id判断
    bool operator==(const Friend &f){return this->id == f.id;}
};
struct Group{
    // 群聊的id，备注，分组
    QString id;
    QString remarks;
    QString category;
    // 是否相等用id判断
    bool operator==(const Group &g){return this->id == g.id;}
};

class User : public QObject
{
    Q_OBJECT
    // 基本信息：id，ip，密码，昵称，职务，是否在线
    QString id;
    QString ip;
    QString password;
    QString name;
    QString job;
    bool online;

    // 添加的好友、群，存储用户、群的id
    QVector<Friend> friends;
    QVector<Group> groups;

public:
    explicit User(QObject *parent = nullptr);
    explicit User(QString id, QString ip, QString password, QString name,
                  QString job, QObject *parent = nullptr);
    // 更新个人信息
    void UpdInfo(QString ip, QString password, QString name, QString job);
    // 处理好友
    void AddFriend(Friend frd);
    void DelFriend(Friend frd);
    void UpdFriend(Friend frd);
    QVector<Friend> getFriends();
    // 处理群聊
    void AddGroup(Group gp);
    void DelGroup(Group gp);
    void UpdGroup(Group gp);
    QVector<Group> getGroups();
    // 上线下线
    void Online();
    void Offline();
    // test用
    void showFriends(){
        for (auto it = friends.begin(); it != friends.end(); ++it) {
            qDebug() << it->id << " " << it->remarks << " " << it->category;
        }
        qDebug() << "";
    };
signals:

};

#endif // USER_H
